1. Statement of the Technical Field
The invention concerns communications systems comprising encoders and decoders. More particularly, the invention relates to maximum a posteriori decoders implementing an improved technique for performing maximum a posteriori probability decoding.
2. Description of the Related Art
Convolutional codes are commonly used in communications systems to reduce errors in transmission. Likewise, various decoding algorithms are known that can be used for decoding such convolutional codes at a data receiver. One such known type of decoding algorithm is the maximum a posteriori (MAP) decoder. Conventional MAP decoders are often comprised of a branch metric unit, a forward path metric unit, a backward path metric unit, a memory device and an extrinsic computation unit. The branch metric unit is generally configured to generate branch metric values for symbols contained in the received encoded information. The branch metric values are generated by calculating the likelihood that a symbol of the received encoded information resulted from each symbol in a code alphabet. The branch metric unit is also configured to perform this computation for each symbol of the received encoded information and alphabet symbol combination. The branch metric unit is further configured to communicate the branch metric values M0, M1, . . . , MN−1 to the memory device for temporary storage.
The forward path metric unit is configured to access the memory device and retrieve the branch metric values M0, M1, . . . , MN−1 from the memory device. Similarly, the backward path metric unit is configured to access the memory device and retrieve the branch metric values MN−1, MN−2, . . . , M0. It should be noted that each of the branch metric units is comprised of a normalization device. The normalization device is configured to normalize the branch metric values input into the respective branch metric unit. Normalization devices are well known to persons skilled in the art, and therefore will not be described in great detail herein. However, it should be understood that the term “normalize” as used herein refers to a scaling of a branch metric value by subtracting a constant value from the branch metric value. It should also be understood that the normalization is performed to: (a) ensure that the branch metric values fall within a pre-defined range of values; and (b) ensure that output of the path metric unit also falls within the quantization limits (i.e., a pre-defined range of values) of the MAP decoder implementation. Quantization limits are well known to persons skilled in the art, and therefore will not be described in great detail herein.
The path metric units are also configured to produce output probability values by consolidating the branch metric values along a constrained set of trellis paths. The output probability values represent the probability that the encoding process arrived at a given state during a given stage. The path metric units are also configured to communicate the output probability values to the memory device for temporary storage.
The extrinsic computation unit is coupled to the memory device. The extrinsic computation unit is configured to retrieve the branch metric values M0, M1, . . . , MN−1 and the output probability values from the memory device. The extrinsic computation unit is also configured to produce MAP output values by combining the branch metric values M0, M1, . . . , MN−1 and output probability values. The MAP output values include decoded information bits. Accordingly, the MAP output values are the same as or substantially similar to the information bits encoded by the encoder.
Despite the advantages of the above described MAP decoder, it suffers from certain drawbacks. For example, the MAP decoder is hardware intensive. In this regard, it should be noted that the branch metric units are comprised of normalization devices. The normalization devices are provided to maintain the outputs of the path metric units within the quantization limits of the MAP decoder implementation. It should also be noted that the MAP decoder requires a relatively large amount of memory to store the branch metric values M0, M1, . . . , MN−1 and output probability values.
In view of the forgoing, there is a need for a MAP decoder that is less hardware intensive than conventional MAP decoders. More specifically, there is a need for a MAP decoder that does not require normalization of the information input thereto. There is also a need for a MAP decoder that requires less memory resources as compared to conventional MAP decoders.